//********************************************************************************************************************//
//ORGANIZATION:
//AUTHOR: bpeng(bogers.peng@gmail.com)
//SUMMARY:
//********************************************************************************************************************//
#ifndef NATIVE_SYSTEM_BASE_FILTER_H
#define NATIVE_SYSTEM_BASE_FILTER_H

#ifndef NATIVE_SYSTEM_BASE_ATOM_H
#include "System/Base/Atom.h"
#endif

namespace Native { namespace System
{
    //****************************************************************************************************************//
    //IFilter
    //
    //****************************************************************************************************************//
    template<typename _TSubject, typename _FHave=function<bool(const _TSubject&)>>
    struct NATIVE_LIBRARY_EXPORT IFilter
    {
        virtual vector<_TSubject> Select(_FHave have) const = 0;
    };
}}

#endif